{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "250a401d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 预处理导入库\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from efficient_apriori import apriori"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "8a3b6745",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>总分(满分20.0分)</th>\n",
       "      <th>签到次数（开课13次）</th>\n",
       "      <th>到课率</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>38%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>16</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>13</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>15</td>\n",
       "      <td>11</td>\n",
       "      <td>85%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>10</td>\n",
       "      <td>9</td>\n",
       "      <td>69%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "      <td>46%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>15</td>\n",
       "      <td>11</td>\n",
       "      <td>85%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>11</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>16</td>\n",
       "      <td>10</td>\n",
       "      <td>77%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>16</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>13</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>16</td>\n",
       "      <td>11</td>\n",
       "      <td>85%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>14</td>\n",
       "      <td>8</td>\n",
       "      <td>62%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>18</td>\n",
       "      <td>11</td>\n",
       "      <td>85%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>17</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>16</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>16</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>20</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>18</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>12</td>\n",
       "      <td>9</td>\n",
       "      <td>69%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>12</td>\n",
       "      <td>6</td>\n",
       "      <td>46%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>16</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>13</td>\n",
       "      <td>11</td>\n",
       "      <td>85%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>10</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>13</td>\n",
       "      <td>9</td>\n",
       "      <td>69%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>17</td>\n",
       "      <td>8</td>\n",
       "      <td>62%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>14</td>\n",
       "      <td>11</td>\n",
       "      <td>85%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>17</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>13</td>\n",
       "      <td>5</td>\n",
       "      <td>38%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>11</td>\n",
       "      <td>10</td>\n",
       "      <td>77%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>15</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>14</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>16</td>\n",
       "      <td>11</td>\n",
       "      <td>85%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>13</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>31%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>14</td>\n",
       "      <td>11</td>\n",
       "      <td>85%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>13</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>13</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>16</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>15</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>11</td>\n",
       "      <td>5</td>\n",
       "      <td>38%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>10</td>\n",
       "      <td>10</td>\n",
       "      <td>77%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>12</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>14</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>16</td>\n",
       "      <td>8</td>\n",
       "      <td>62%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>11</td>\n",
       "      <td>9</td>\n",
       "      <td>69%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>15</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>11</td>\n",
       "      <td>11</td>\n",
       "      <td>85%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>17</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>18</td>\n",
       "      <td>10</td>\n",
       "      <td>77%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50</th>\n",
       "      <td>13</td>\n",
       "      <td>11</td>\n",
       "      <td>85%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>51</th>\n",
       "      <td>12</td>\n",
       "      <td>10</td>\n",
       "      <td>77%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>52</th>\n",
       "      <td>15</td>\n",
       "      <td>12</td>\n",
       "      <td>92%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>53</th>\n",
       "      <td>13</td>\n",
       "      <td>9</td>\n",
       "      <td>69%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>54</th>\n",
       "      <td>15</td>\n",
       "      <td>11</td>\n",
       "      <td>85%</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    总分(满分20.0分)  签到次数（开课13次）  到课率\n",
       "0             6            5  38%\n",
       "1            16           12  92%\n",
       "2            13           12  92%\n",
       "3            15           11  85%\n",
       "4            10            9  69%\n",
       "5            13            6  46%\n",
       "6            15           11  85%\n",
       "7            11           12  92%\n",
       "8            16           10  77%\n",
       "9            16           12  92%\n",
       "10           13           12  92%\n",
       "11           16           11  85%\n",
       "12           14            8  62%\n",
       "13           18           11  85%\n",
       "14           17           12  92%\n",
       "15           16           12  92%\n",
       "16           16           12  92%\n",
       "17           20           12  92%\n",
       "18           18           12  92%\n",
       "19           12            9  69%\n",
       "20           12            6  46%\n",
       "21           16           12  92%\n",
       "22           13           11  85%\n",
       "23           10           12  92%\n",
       "24           13            9  69%\n",
       "25           17            8  62%\n",
       "26           14           11  85%\n",
       "27           17           12  92%\n",
       "28           13            5  38%\n",
       "29           11           10  77%\n",
       "30           15           12  92%\n",
       "31           14           12  92%\n",
       "32           16           11  85%\n",
       "33           13           12  92%\n",
       "34            5            4  31%\n",
       "35           14           11  85%\n",
       "36           13           12  92%\n",
       "37           13           12  92%\n",
       "38           16           12  92%\n",
       "39           15           12  92%\n",
       "40           11            5  38%\n",
       "41           10           10  77%\n",
       "42           12           12  92%\n",
       "43           14           12  92%\n",
       "44           16            8  62%\n",
       "45           11            9  69%\n",
       "46           15           12  92%\n",
       "47           11           11  85%\n",
       "48           17           12  92%\n",
       "49           18           10  77%\n",
       "50           13           11  85%\n",
       "51           12           10  77%\n",
       "52           15           12  92%\n",
       "53           13            9  69%\n",
       "54           15           11  85%"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 读取文件\n",
    "df = pd.read_excel(r'数据挖掘-汇总-数据表.xlsx',\n",
    "                   usecols=[i for i in range(1,4)],         \n",
    "                   skiprows=range(0,1),                    \n",
    "                   nrows=56)                                \n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "79868efb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>总分(满分20.0分)</th>\n",
       "      <th>签到次数（开课13次）</th>\n",
       "      <th>到课率</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>16.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>13.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>15.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>10.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>0.69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>13.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.46</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>15.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>11.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>16.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>0.77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>16.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>13.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>16.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>14.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>0.62</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>18.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>17.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>16.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>16.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>20.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>18.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>12.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>0.69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>12.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.46</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>16.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>13.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>10.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>13.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>0.69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>17.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>0.62</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>14.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>17.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>13.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>11.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>0.77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>15.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>14.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>16.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>13.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>5.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.31</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>14.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>13.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>13.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>16.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>15.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>11.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>10.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>0.77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>12.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>14.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>16.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>0.62</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>11.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>0.69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>15.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>11.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>17.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>18.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>0.77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50</th>\n",
       "      <td>13.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>51</th>\n",
       "      <td>12.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>0.77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>52</th>\n",
       "      <td>15.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>53</th>\n",
       "      <td>13.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>0.69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>54</th>\n",
       "      <td>15.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    总分(满分20.0分)  签到次数（开课13次）   到课率\n",
       "0           6.0          5.0  0.38\n",
       "1          16.0         12.0  0.92\n",
       "2          13.0         12.0  0.92\n",
       "3          15.0         11.0  0.85\n",
       "4          10.0          9.0  0.69\n",
       "5          13.0          6.0  0.46\n",
       "6          15.0         11.0  0.85\n",
       "7          11.0         12.0  0.92\n",
       "8          16.0         10.0  0.77\n",
       "9          16.0         12.0  0.92\n",
       "10         13.0         12.0  0.92\n",
       "11         16.0         11.0  0.85\n",
       "12         14.0          8.0  0.62\n",
       "13         18.0         11.0  0.85\n",
       "14         17.0         12.0  0.92\n",
       "15         16.0         12.0  0.92\n",
       "16         16.0         12.0  0.92\n",
       "17         20.0         12.0  0.92\n",
       "18         18.0         12.0  0.92\n",
       "19         12.0          9.0  0.69\n",
       "20         12.0          6.0  0.46\n",
       "21         16.0         12.0  0.92\n",
       "22         13.0         11.0  0.85\n",
       "23         10.0         12.0  0.92\n",
       "24         13.0          9.0  0.69\n",
       "25         17.0          8.0  0.62\n",
       "26         14.0         11.0  0.85\n",
       "27         17.0         12.0  0.92\n",
       "28         13.0          5.0  0.38\n",
       "29         11.0         10.0  0.77\n",
       "30         15.0         12.0  0.92\n",
       "31         14.0         12.0  0.92\n",
       "32         16.0         11.0  0.85\n",
       "33         13.0         12.0  0.92\n",
       "34          5.0          4.0  0.31\n",
       "35         14.0         11.0  0.85\n",
       "36         13.0         12.0  0.92\n",
       "37         13.0         12.0  0.92\n",
       "38         16.0         12.0  0.92\n",
       "39         15.0         12.0  0.92\n",
       "40         11.0          5.0  0.38\n",
       "41         10.0         10.0  0.77\n",
       "42         12.0         12.0  0.92\n",
       "43         14.0         12.0  0.92\n",
       "44         16.0          8.0  0.62\n",
       "45         11.0          9.0  0.69\n",
       "46         15.0         12.0  0.92\n",
       "47         11.0         11.0  0.85\n",
       "48         17.0         12.0  0.92\n",
       "49         18.0         10.0  0.77\n",
       "50         13.0         11.0  0.85\n",
       "51         12.0         10.0  0.77\n",
       "52         15.0         12.0  0.92\n",
       "53         13.0          9.0  0.69\n",
       "54         15.0         11.0  0.85"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list = [float(i[0:2])/100 for i in df[\"到课率\"]]\n",
    "df[\"到课率\"] = list\n",
    "df[[\"总分(满分20.0分)\",\"签到次数（开课13次）\",\"到课率\"]] = df[[\"总分(满分20.0分)\",\"签到次数（开课13次）\",\"到课率\"]].astype(float)\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "f1c01be7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 6.  ,  5.  ,  0.38, 16.  , 12.  ,  0.92, 13.  , 12.  ,  0.92,\n",
       "        15.  , 11.  ,  0.85, 10.  ,  9.  ,  0.69, 13.  ,  6.  ,  0.46,\n",
       "        15.  , 11.  ,  0.85, 11.  , 12.  ,  0.92, 16.  , 10.  ,  0.77,\n",
       "        16.  , 12.  ,  0.92, 13.  , 12.  ,  0.92, 16.  , 11.  ,  0.85,\n",
       "        14.  ,  8.  ,  0.62, 18.  , 11.  ,  0.85, 17.  , 12.  ,  0.92,\n",
       "        16.  , 12.  ,  0.92, 16.  , 12.  ,  0.92, 20.  , 12.  ,  0.92,\n",
       "        18.  ],\n",
       "       [12.  ,  0.92, 12.  ,  9.  ,  0.69, 12.  ,  6.  ,  0.46, 16.  ,\n",
       "        12.  ,  0.92, 13.  , 11.  ,  0.85, 10.  , 12.  ,  0.92, 13.  ,\n",
       "         9.  ,  0.69, 17.  ,  8.  ,  0.62, 14.  , 11.  ,  0.85, 17.  ,\n",
       "        12.  ,  0.92, 13.  ,  5.  ,  0.38, 11.  , 10.  ,  0.77, 15.  ,\n",
       "        12.  ,  0.92, 14.  , 12.  ,  0.92, 16.  , 11.  ,  0.85, 13.  ,\n",
       "        12.  ,  0.92,  5.  ,  4.  ,  0.31, 14.  , 11.  ,  0.85, 13.  ,\n",
       "        12.  ],\n",
       "       [ 0.92, 13.  , 12.  ,  0.92, 16.  , 12.  ,  0.92, 15.  , 12.  ,\n",
       "         0.92, 11.  ,  5.  ,  0.38, 10.  , 10.  ,  0.77, 12.  , 12.  ,\n",
       "         0.92, 14.  , 12.  ,  0.92, 16.  ,  8.  ,  0.62, 11.  ,  9.  ,\n",
       "         0.69, 15.  , 12.  ,  0.92, 11.  , 11.  ,  0.85, 17.  , 12.  ,\n",
       "         0.92, 18.  , 10.  ,  0.77, 13.  , 11.  ,  0.85, 12.  , 10.  ,\n",
       "         0.77, 15.  , 12.  ,  0.92, 13.  ,  9.  ,  0.69, 15.  , 11.  ,\n",
       "         0.85]])"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 等深分箱（分3箱）\n",
    "data_box = df.values.reshape([3,-1])\n",
    "data_box"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "9b6c188b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([8.79272727, 8.79272727, 8.79272727, 8.05018182, 8.05018182,\n",
       "       8.05018182, 8.22763636, 8.22763636, 8.22763636])"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# ⽤箱均值光滑\n",
    "np.repeat(data_box.mean(axis=1), 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "84db0078",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 最⼤最⼩规范化(min-max scaled)\n",
    "from sklearn import preprocessing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "0359f829",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.06666667, 0.125     , 0.1147541 ],\n",
       "       [0.73333333, 1.        , 1.        ],\n",
       "       [0.53333333, 1.        , 1.        ],\n",
       "       [0.66666667, 0.875     , 0.8852459 ],\n",
       "       [0.33333333, 0.625     , 0.62295082],\n",
       "       [0.53333333, 0.25      , 0.24590164],\n",
       "       [0.66666667, 0.875     , 0.8852459 ],\n",
       "       [0.4       , 1.        , 1.        ],\n",
       "       [0.73333333, 0.75      , 0.75409836],\n",
       "       [0.73333333, 1.        , 1.        ],\n",
       "       [0.53333333, 1.        , 1.        ],\n",
       "       [0.73333333, 0.875     , 0.8852459 ],\n",
       "       [0.6       , 0.5       , 0.50819672],\n",
       "       [0.86666667, 0.875     , 0.8852459 ],\n",
       "       [0.8       , 1.        , 1.        ],\n",
       "       [0.73333333, 1.        , 1.        ],\n",
       "       [0.73333333, 1.        , 1.        ],\n",
       "       [1.        , 1.        , 1.        ],\n",
       "       [0.86666667, 1.        , 1.        ],\n",
       "       [0.46666667, 0.625     , 0.62295082],\n",
       "       [0.46666667, 0.25      , 0.24590164],\n",
       "       [0.73333333, 1.        , 1.        ],\n",
       "       [0.53333333, 0.875     , 0.8852459 ],\n",
       "       [0.33333333, 1.        , 1.        ],\n",
       "       [0.53333333, 0.625     , 0.62295082],\n",
       "       [0.8       , 0.5       , 0.50819672],\n",
       "       [0.6       , 0.875     , 0.8852459 ],\n",
       "       [0.8       , 1.        , 1.        ],\n",
       "       [0.53333333, 0.125     , 0.1147541 ],\n",
       "       [0.4       , 0.75      , 0.75409836],\n",
       "       [0.66666667, 1.        , 1.        ],\n",
       "       [0.6       , 1.        , 1.        ],\n",
       "       [0.73333333, 0.875     , 0.8852459 ],\n",
       "       [0.53333333, 1.        , 1.        ],\n",
       "       [0.        , 0.        , 0.        ],\n",
       "       [0.6       , 0.875     , 0.8852459 ],\n",
       "       [0.53333333, 1.        , 1.        ],\n",
       "       [0.53333333, 1.        , 1.        ],\n",
       "       [0.73333333, 1.        , 1.        ],\n",
       "       [0.66666667, 1.        , 1.        ],\n",
       "       [0.4       , 0.125     , 0.1147541 ],\n",
       "       [0.33333333, 0.75      , 0.75409836],\n",
       "       [0.46666667, 1.        , 1.        ],\n",
       "       [0.6       , 1.        , 1.        ],\n",
       "       [0.73333333, 0.5       , 0.50819672],\n",
       "       [0.4       , 0.625     , 0.62295082],\n",
       "       [0.66666667, 1.        , 1.        ],\n",
       "       [0.4       , 0.875     , 0.8852459 ],\n",
       "       [0.8       , 1.        , 1.        ],\n",
       "       [0.86666667, 0.75      , 0.75409836],\n",
       "       [0.53333333, 0.875     , 0.8852459 ],\n",
       "       [0.46666667, 0.75      , 0.75409836],\n",
       "       [0.66666667, 1.        , 1.        ],\n",
       "       [0.53333333, 0.625     , 0.62295082],\n",
       "       [0.66666667, 0.875     , 0.8852459 ]])"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train = df.values\n",
    "min_max_scaler = preprocessing.MinMaxScaler()\n",
    "X_train_minmax = min_max_scaler.fit_transform(X_train)\n",
    "X_train_minmax"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "9474c610",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-2.81770662, -2.46120339, -2.48892317],\n",
       "       [ 0.75311974,  0.74002399,  0.72783132],\n",
       "       [-0.31812817,  0.74002399,  0.72783132],\n",
       "       [ 0.39603711,  0.28270579,  0.31084463],\n",
       "       [-1.38937607, -0.6319306 , -0.64226782],\n",
       "       [-0.31812817, -2.00388519, -2.01236695],\n",
       "       [ 0.39603711,  0.28270579,  0.31084463],\n",
       "       [-1.03229344,  0.74002399,  0.72783132],\n",
       "       [ 0.75311974, -0.1746124 , -0.1657116 ],\n",
       "       [ 0.75311974,  0.74002399,  0.72783132],\n",
       "       [-0.31812817,  0.74002399,  0.72783132],\n",
       "       [ 0.75311974,  0.28270579,  0.31084463],\n",
       "       [ 0.03895447, -1.0892488 , -1.05925451],\n",
       "       [ 1.46728501,  0.28270579,  0.31084463],\n",
       "       [ 1.11020238,  0.74002399,  0.72783132],\n",
       "       [ 0.75311974,  0.74002399,  0.72783132],\n",
       "       [ 0.75311974,  0.74002399,  0.72783132],\n",
       "       [ 2.18145028,  0.74002399,  0.72783132],\n",
       "       [ 1.46728501,  0.74002399,  0.72783132],\n",
       "       [-0.6752108 , -0.6319306 , -0.64226782],\n",
       "       [-0.6752108 , -2.00388519, -2.01236695],\n",
       "       [ 0.75311974,  0.74002399,  0.72783132],\n",
       "       [-0.31812817,  0.28270579,  0.31084463],\n",
       "       [-1.38937607,  0.74002399,  0.72783132],\n",
       "       [-0.31812817, -0.6319306 , -0.64226782],\n",
       "       [ 1.11020238, -1.0892488 , -1.05925451],\n",
       "       [ 0.03895447,  0.28270579,  0.31084463],\n",
       "       [ 1.11020238,  0.74002399,  0.72783132],\n",
       "       [-0.31812817, -2.46120339, -2.48892317],\n",
       "       [-1.03229344, -0.1746124 , -0.1657116 ],\n",
       "       [ 0.39603711,  0.74002399,  0.72783132],\n",
       "       [ 0.03895447,  0.74002399,  0.72783132],\n",
       "       [ 0.75311974,  0.28270579,  0.31084463],\n",
       "       [-0.31812817,  0.74002399,  0.72783132],\n",
       "       [-3.17478925, -2.91852159, -2.90590987],\n",
       "       [ 0.03895447,  0.28270579,  0.31084463],\n",
       "       [-0.31812817,  0.74002399,  0.72783132],\n",
       "       [-0.31812817,  0.74002399,  0.72783132],\n",
       "       [ 0.75311974,  0.74002399,  0.72783132],\n",
       "       [ 0.39603711,  0.74002399,  0.72783132],\n",
       "       [-1.03229344, -2.46120339, -2.48892317],\n",
       "       [-1.38937607, -0.1746124 , -0.1657116 ],\n",
       "       [-0.6752108 ,  0.74002399,  0.72783132],\n",
       "       [ 0.03895447,  0.74002399,  0.72783132],\n",
       "       [ 0.75311974, -1.0892488 , -1.05925451],\n",
       "       [-1.03229344, -0.6319306 , -0.64226782],\n",
       "       [ 0.39603711,  0.74002399,  0.72783132],\n",
       "       [-1.03229344,  0.28270579,  0.31084463],\n",
       "       [ 1.11020238,  0.74002399,  0.72783132],\n",
       "       [ 1.46728501, -0.1746124 , -0.1657116 ],\n",
       "       [-0.31812817,  0.28270579,  0.31084463],\n",
       "       [-0.6752108 , -0.1746124 , -0.1657116 ],\n",
       "       [ 0.39603711,  0.74002399,  0.72783132],\n",
       "       [-0.31812817, -0.6319306 , -0.64226782],\n",
       "       [ 0.39603711,  0.28270579,  0.31084463]])"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Z-score 规范化（零均值规范化）\n",
    "#通过z-socre规范化，将数值的均值转换成0， ⽅差转换成1\n",
    "X_scaled = preprocessing.scale(X_train)\n",
    "X_scaled"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "18af35f6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-1.312081756375185e-16"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_scaled.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "e3b21210",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0000000000000002"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_scaled.var()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "26db636f",
   "metadata": {},
   "outputs": [],
   "source": [
    "#关联\n",
    "import pandas as pd\n",
    "from efficient_apriori import apriori"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "43f94fe5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>得分 (总:6.0分)</th>\n",
       "      <th>签到方式.2</th>\n",
       "      <th>签到方式.3</th>\n",
       "      <th>得分 (总:5.0分)</th>\n",
       "      <th>签到方式.4</th>\n",
       "      <th>得分 (总:3.0分)</th>\n",
       "      <th>签到方式.5</th>\n",
       "      <th>得分 (总:2.0分)</th>\n",
       "      <th>签到方式.6</th>\n",
       "      <th>签到方式.7</th>\n",
       "      <th>签到方式.8</th>\n",
       "      <th>得分 (总:4.0分)</th>\n",
       "      <th>签到方式.9</th>\n",
       "      <th>签到方式.10</th>\n",
       "      <th>签到方式.11</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>1</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>3</td>\n",
       "      <td>课堂暗号</td>\n",
       "      <td>课堂暗号</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>课堂暗号</td>\n",
       "      <td>0</td>\n",
       "      <td>课堂暗号</td>\n",
       "      <td>课堂暗号</td>\n",
       "      <td>课堂暗号</td>\n",
       "      <td>2</td>\n",
       "      <td>课堂暗号</td>\n",
       "      <td>课堂暗号</td>\n",
       "      <td>课堂暗号</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>未上课</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>未上课</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>未上课</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>未上课</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>“正在上课”提示</td>\n",
       "      <td>未上课</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>未上课</td>\n",
       "      <td>“正在上课”提示</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>未上课</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>“正在上课”提示</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>“正在上课”提示</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>“正在上课”提示</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>“正在上课”提示</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>未上课</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>未上课</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>“正在上课”提示</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>未上课</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>“正在上课”提示</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>“正在上课”提示</td>\n",
       "      <td>未上课</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>“正在上课”提示</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>1</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>未上课</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>未上课</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>1</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>“正在上课”提示</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>未上课</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>1</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>1</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>“正在上课”提示</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>1</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>未上课</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>未上课</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>6</td>\n",
       "      <td>“正在上课”提示</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>“正在上课”提示</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>“正在上课”提示</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>未上课</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>未上课</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50</th>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>“正在上课”提示</td>\n",
       "      <td>未上课</td>\n",
       "      <td>0</td>\n",
       "      <td>“正在上课”提示</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>51</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>3</td>\n",
       "      <td>“正在上课”提示</td>\n",
       "      <td>3</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>未上课</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>52</th>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>1</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>4</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>53</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>未上课</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>54</th>\n",
       "      <td>6</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>5</td>\n",
       "      <td>“正在上课”提示</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>0</td>\n",
       "      <td>未上课</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>2</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "      <td>扫二维码</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    得分 (总:6.0分)    签到方式.2 签到方式.3  得分 (总:5.0分)    签到方式.4  得分 (总:3.0分)  \\\n",
       "0             4      扫二维码   扫二维码            0       未上课            0   \n",
       "1             6      扫二维码   扫二维码            3      扫二维码            2   \n",
       "2             3      扫二维码   扫二维码            4      扫二维码            2   \n",
       "3             6      扫二维码   扫二维码            4      扫二维码            3   \n",
       "4             0       未上课    未上课            5      扫二维码            1   \n",
       "5             6      扫二维码   扫二维码            4      扫二维码            3   \n",
       "6             6      扫二维码   扫二维码            5      扫二维码            0   \n",
       "7             3      课堂暗号   课堂暗号            4      扫二维码            2   \n",
       "8             4      扫二维码   扫二维码            5      扫二维码            3   \n",
       "9             6      扫二维码   扫二维码            5      扫二维码            3   \n",
       "10            4      扫二维码   扫二维码            4      扫二维码            3   \n",
       "11            4      扫二维码   扫二维码            4      扫二维码            2   \n",
       "12            6      扫二维码    未上课            5      扫二维码            3   \n",
       "13            6      扫二维码   扫二维码            5      扫二维码            3   \n",
       "14            6      扫二维码   扫二维码            4      扫二维码            3   \n",
       "15            4      扫二维码   扫二维码            5      扫二维码            3   \n",
       "16            6      扫二维码   扫二维码            5      扫二维码            3   \n",
       "17            6      扫二维码   扫二维码            5      扫二维码            3   \n",
       "18            6      扫二维码   扫二维码            5      扫二维码            3   \n",
       "19            0       未上课    未上课            5      扫二维码            3   \n",
       "20            4      扫二维码   扫二维码            5      扫二维码            3   \n",
       "21            4      扫二维码   扫二维码            5      扫二维码            3   \n",
       "22            4      扫二维码   扫二维码            5      扫二维码            0   \n",
       "23            3      扫二维码   扫二维码            5      扫二维码            0   \n",
       "24            4      扫二维码   扫二维码            5      扫二维码            0   \n",
       "25            6      扫二维码   扫二维码            5  “正在上课”提示            2   \n",
       "26            4      扫二维码   扫二维码            5      扫二维码            3   \n",
       "27            4      扫二维码   扫二维码            4      扫二维码            3   \n",
       "28            6      扫二维码   扫二维码            4      扫二维码            3   \n",
       "29            4      扫二维码   扫二维码            0       未上课            3   \n",
       "30            4      扫二维码   扫二维码            5      扫二维码            2   \n",
       "31            6      扫二维码   扫二维码            5      扫二维码            1   \n",
       "32            6      扫二维码   扫二维码            2      扫二维码            2   \n",
       "33            4      扫二维码   扫二维码            3      扫二维码            2   \n",
       "34            3      扫二维码    未上课            0      扫二维码            2   \n",
       "35            4      扫二维码   扫二维码            5      扫二维码            1   \n",
       "36            5      扫二维码   扫二维码            3      扫二维码            1   \n",
       "37            4      扫二维码   扫二维码            3      扫二维码            2   \n",
       "38            4      扫二维码   扫二维码            5      扫二维码            3   \n",
       "39            4      扫二维码   扫二维码            5      扫二维码            2   \n",
       "40            6      扫二维码   扫二维码            4      扫二维码            1   \n",
       "41            6      扫二维码   扫二维码            0       未上课            0   \n",
       "42            5      扫二维码   扫二维码            4      扫二维码            2   \n",
       "43            5      扫二维码   扫二维码            5      扫二维码            2   \n",
       "44            6      扫二维码   扫二维码            5      扫二维码            3   \n",
       "45            4      扫二维码   扫二维码            5      扫二维码            2   \n",
       "46            4      扫二维码   扫二维码            4      扫二维码            3   \n",
       "47            4      扫二维码   扫二维码            3      扫二维码            0   \n",
       "48            6  “正在上课”提示   扫二维码            4  “正在上课”提示            3   \n",
       "49            6      扫二维码   扫二维码            5      扫二维码            3   \n",
       "50            5      扫二维码   扫二维码            5      扫二维码            3   \n",
       "51            6      扫二维码   扫二维码            3  “正在上课”提示            3   \n",
       "52            4      扫二维码   扫二维码            4      扫二维码            1   \n",
       "53            6      扫二维码   扫二维码            5      扫二维码            2   \n",
       "54            6      扫二维码   扫二维码            5  “正在上课”提示            2   \n",
       "\n",
       "      签到方式.5  得分 (总:2.0分)    签到方式.6    签到方式.7    签到方式.8  得分 (总:4.0分)  \\\n",
       "0       扫二维码            0       未上课       未上课       未上课            2   \n",
       "1       扫二维码            2      扫二维码      扫二维码      扫二维码            3   \n",
       "2       扫二维码            2      扫二维码      扫二维码      扫二维码            2   \n",
       "3       扫二维码            2      扫二维码      扫二维码      扫二维码            0   \n",
       "4       扫二维码            0      扫二维码      扫二维码      扫二维码            4   \n",
       "5       扫二维码            0       未上课       未上课       未上课            0   \n",
       "6        未上课            2      扫二维码      扫二维码      扫二维码            2   \n",
       "7       课堂暗号            0      课堂暗号      课堂暗号      课堂暗号            2   \n",
       "8       扫二维码            2      扫二维码       未上课      扫二维码            2   \n",
       "9       扫二维码            0      扫二维码      扫二维码      扫二维码            2   \n",
       "10      扫二维码            0      扫二维码      扫二维码      扫二维码            2   \n",
       "11      扫二维码            2      扫二维码       未上课      扫二维码            4   \n",
       "12      扫二维码            0      扫二维码  “正在上课”提示       未上课            0   \n",
       "13      扫二维码            2      扫二维码      扫二维码       未上课            2   \n",
       "14      扫二维码            0      扫二维码      扫二维码      扫二维码            4   \n",
       "15      扫二维码            2      扫二维码      扫二维码      扫二维码            2   \n",
       "16      扫二维码            0      扫二维码      扫二维码      扫二维码            2   \n",
       "17      扫二维码            2      扫二维码      扫二维码      扫二维码            4   \n",
       "18      扫二维码            0      扫二维码      扫二维码      扫二维码            4   \n",
       "19      扫二维码            2      扫二维码      扫二维码      扫二维码            2   \n",
       "20  “正在上课”提示            0       未上课       未上课       未上课            0   \n",
       "21      扫二维码            2      扫二维码      扫二维码      扫二维码            2   \n",
       "22       未上课            2      扫二维码      扫二维码      扫二维码            2   \n",
       "23  “正在上课”提示            0      扫二维码      扫二维码      扫二维码            2   \n",
       "24       未上课            2      扫二维码      扫二维码       未上课            2   \n",
       "25      扫二维码            0       未上课       未上课       未上课            4   \n",
       "26  “正在上课”提示            0      扫二维码  “正在上课”提示       未上课            2   \n",
       "27      扫二维码            2      扫二维码      扫二维码      扫二维码            4   \n",
       "28      扫二维码            0       未上课       未上课       未上课            0   \n",
       "29      扫二维码            2      扫二维码      扫二维码      扫二维码            2   \n",
       "30      扫二维码            2  “正在上课”提示      扫二维码      扫二维码            2   \n",
       "31      扫二维码            0      扫二维码      扫二维码      扫二维码            2   \n",
       "32      扫二维码            2      扫二维码      扫二维码      扫二维码            4   \n",
       "33      扫二维码            2      扫二维码      扫二维码      扫二维码            2   \n",
       "34      扫二维码            0       未上课       未上课       未上课            0   \n",
       "35      扫二维码            2      扫二维码  “正在上课”提示      扫二维码            2   \n",
       "36      扫二维码            2      扫二维码      扫二维码      扫二维码            2   \n",
       "37      扫二维码            2      扫二维码      扫二维码      扫二维码            2   \n",
       "38      扫二维码            2      扫二维码      扫二维码      扫二维码            2   \n",
       "39      扫二维码            2      扫二维码      扫二维码      扫二维码            2   \n",
       "40      扫二维码            0       未上课       未上课       未上课            0   \n",
       "41      扫二维码            0       未上课      扫二维码      扫二维码            4   \n",
       "42      扫二维码            0      扫二维码      扫二维码      扫二维码            1   \n",
       "43      扫二维码            0      扫二维码      扫二维码      扫二维码            2   \n",
       "44      扫二维码            0       未上课       未上课       未上课            2   \n",
       "45      扫二维码            0      扫二维码      扫二维码      扫二维码            0   \n",
       "46      扫二维码            2      扫二维码      扫二维码      扫二维码            2   \n",
       "47      扫二维码            2      扫二维码       未上课      扫二维码            2   \n",
       "48      扫二维码            0      扫二维码      扫二维码  “正在上课”提示            4   \n",
       "49      扫二维码            0      扫二维码      扫二维码       未上课            4   \n",
       "50      扫二维码            0      扫二维码  “正在上课”提示       未上课            0   \n",
       "51      扫二维码            0      扫二维码      扫二维码       未上课            0   \n",
       "52      扫二维码            2      扫二维码      扫二维码      扫二维码            4   \n",
       "53      扫二维码            0       未上课      扫二维码      扫二维码            0   \n",
       "54      扫二维码            0       未上课      扫二维码      扫二维码            2   \n",
       "\n",
       "      签到方式.9   签到方式.10   签到方式.11  \n",
       "0       扫二维码       未上课       未上课  \n",
       "1       扫二维码      扫二维码      扫二维码  \n",
       "2       扫二维码      扫二维码      扫二维码  \n",
       "3        未上课      扫二维码      扫二维码  \n",
       "4       扫二维码      扫二维码      扫二维码  \n",
       "5        未上课       未上课      扫二维码  \n",
       "6       扫二维码      扫二维码      扫二维码  \n",
       "7       课堂暗号      课堂暗号      课堂暗号  \n",
       "8       扫二维码       未上课      扫二维码  \n",
       "9       扫二维码      扫二维码      扫二维码  \n",
       "10      扫二维码      扫二维码      扫二维码  \n",
       "11      扫二维码      扫二维码      扫二维码  \n",
       "12      扫二维码       未上课  “正在上课”提示  \n",
       "13      扫二维码      扫二维码      扫二维码  \n",
       "14      扫二维码      扫二维码  “正在上课”提示  \n",
       "15      扫二维码      扫二维码      扫二维码  \n",
       "16      扫二维码      扫二维码      扫二维码  \n",
       "17      扫二维码      扫二维码      扫二维码  \n",
       "18      扫二维码      扫二维码      扫二维码  \n",
       "19      扫二维码      扫二维码      扫二维码  \n",
       "20       未上课       未上课  “正在上课”提示  \n",
       "21      扫二维码      扫二维码      扫二维码  \n",
       "22      扫二维码      扫二维码      扫二维码  \n",
       "23      扫二维码      扫二维码      扫二维码  \n",
       "24      扫二维码       未上课      扫二维码  \n",
       "25      扫二维码       未上课      扫二维码  \n",
       "26      扫二维码      扫二维码      扫二维码  \n",
       "27      扫二维码      扫二维码      扫二维码  \n",
       "28       未上课       未上课       未上课  \n",
       "29      扫二维码      扫二维码      扫二维码  \n",
       "30      扫二维码      扫二维码      扫二维码  \n",
       "31      扫二维码      扫二维码      扫二维码  \n",
       "32      扫二维码      扫二维码       未上课  \n",
       "33      扫二维码      扫二维码      扫二维码  \n",
       "34       未上课       未上课       未上课  \n",
       "35      扫二维码      扫二维码       未上课  \n",
       "36      扫二维码      扫二维码      扫二维码  \n",
       "37      扫二维码      扫二维码      扫二维码  \n",
       "38      扫二维码      扫二维码      扫二维码  \n",
       "39      扫二维码      扫二维码      扫二维码  \n",
       "40       未上课       未上课       未上课  \n",
       "41      扫二维码  “正在上课”提示      扫二维码  \n",
       "42      扫二维码      扫二维码      扫二维码  \n",
       "43      扫二维码      扫二维码      扫二维码  \n",
       "44      扫二维码       未上课      扫二维码  \n",
       "45      扫二维码       未上课       未上课  \n",
       "46      扫二维码      扫二维码      扫二维码  \n",
       "47      扫二维码      扫二维码      扫二维码  \n",
       "48      扫二维码      扫二维码      扫二维码  \n",
       "49      扫二维码       未上课      扫二维码  \n",
       "50  “正在上课”提示      扫二维码      扫二维码  \n",
       "51       未上课      扫二维码      扫二维码  \n",
       "52      扫二维码      扫二维码      扫二维码  \n",
       "53       未上课       未上课      扫二维码  \n",
       "54      扫二维码      扫二维码      扫二维码  "
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_excel(r'数据挖掘-汇总-数据表.xlsx',\n",
    "                   usecols=[i for i in range(9,24)],         # 读取9-23列\n",
    "                   skiprows=range(0,1),                     # 不读取0-3行\n",
    "                   nrows=56)                                # 读取前41列\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "823152e3",
   "metadata": {},
   "outputs": [],
   "source": [
    "index_list = tuple(df.index)\n",
    "columns_list = tuple(df.columns)\n",
    "transactions_list = []\n",
    "list_in = []"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "f2d3b29f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "数据集：\n",
      " 55\n"
     ]
    }
   ],
   "source": [
    "for index in index_list:\n",
    "    # print(index)\n",
    "    for line_value in df.loc[index]:\n",
    "        # print(line_value)\n",
    "        list_in.append(str(line_value))\n",
    "    transactions_list.append(tuple(list_in))\n",
    "    list_in = []\n",
    "print(\"数据集：\\n\", len(transactions_list))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "9d63368c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 项集： {('4',): 38, ('扫二维码',): 55, ('0',): 36, ('未上课',): 30, ('2',): 42, ('3',): 35, ('5',): 32}\n",
      "2 项集： {('0', '扫二维码'): 36, ('2', '4'): 28, ('2', '扫二维码'): 42, ('3', '扫二维码'): 35, ('4', '扫二维码'): 38, ('5', '扫二维码'): 32, ('扫二维码', '未上课'): 30}\n",
      "3 项集： {('2', '4', '扫二维码'): 28}\n"
     ]
    }
   ],
   "source": [
    "# 频繁项集(指定min_support=0.5, min_confidence=0.8)\n",
    "itemsets_2, rules_2 = apriori(transactions_list, min_support=0.5, min_confidence=0.8)\n",
    "for i in itemsets_2:\n",
    "    print(i, \"项集：\", itemsets_2[i])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "3bfa45cb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "强关联规则:\n",
      " [{0} -> {扫二维码}, {2} -> {扫二维码}, {3} -> {扫二维码}, {4} -> {扫二维码}, {5} -> {扫二维码}, {未上课} -> {扫二维码}, {2, 4} -> {扫二维码}]\n"
     ]
    }
   ],
   "source": [
    "print(\"强关联规则:\\n\", rules_2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "id": "7f4c2280",
   "metadata": {},
   "outputs": [],
   "source": [
    "#分类\n",
    "import csv\n",
    "import pandas as pd\n",
    "from sklearn.utils import shuffle\n",
    "from sklearn import neighbors, datasets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "id": "afbcd1ed",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>学号</th>\n",
       "      <th>性别</th>\n",
       "      <th>成绩</th>\n",
       "      <th>绩点</th>\n",
       "      <th>学分绩点</th>\n",
       "      <th>修读性质</th>\n",
       "      <th>备注</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>180504501001</td>\n",
       "      <td>男</td>\n",
       "      <td>69.0</td>\n",
       "      <td>1.9</td>\n",
       "      <td>5.7</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>180504501002</td>\n",
       "      <td>男</td>\n",
       "      <td>84.0</td>\n",
       "      <td>3.4</td>\n",
       "      <td>10.2</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>180504501003</td>\n",
       "      <td>男</td>\n",
       "      <td>82.0</td>\n",
       "      <td>3.2</td>\n",
       "      <td>9.6</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>180504501004</td>\n",
       "      <td>女</td>\n",
       "      <td>86.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>10.8</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>180504501005</td>\n",
       "      <td>男</td>\n",
       "      <td>77.0</td>\n",
       "      <td>2.7</td>\n",
       "      <td>8.1</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>180504501006</td>\n",
       "      <td>女</td>\n",
       "      <td>69.0</td>\n",
       "      <td>1.9</td>\n",
       "      <td>5.7</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>180504501007</td>\n",
       "      <td>男</td>\n",
       "      <td>84.0</td>\n",
       "      <td>3.4</td>\n",
       "      <td>10.2</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>180504501008</td>\n",
       "      <td>男</td>\n",
       "      <td>84.0</td>\n",
       "      <td>3.4</td>\n",
       "      <td>10.2</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>180504501009</td>\n",
       "      <td>男</td>\n",
       "      <td>75.0</td>\n",
       "      <td>2.5</td>\n",
       "      <td>7.5</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>180504501010</td>\n",
       "      <td>男</td>\n",
       "      <td>83.0</td>\n",
       "      <td>3.3</td>\n",
       "      <td>9.9</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>180504501011</td>\n",
       "      <td>男</td>\n",
       "      <td>81.0</td>\n",
       "      <td>3.1</td>\n",
       "      <td>9.3</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>180504501013</td>\n",
       "      <td>男</td>\n",
       "      <td>90.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>180504501014</td>\n",
       "      <td>男</td>\n",
       "      <td>87.0</td>\n",
       "      <td>3.7</td>\n",
       "      <td>11.1</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>180504501015</td>\n",
       "      <td>男</td>\n",
       "      <td>83.0</td>\n",
       "      <td>3.3</td>\n",
       "      <td>9.9</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>180504501016</td>\n",
       "      <td>男</td>\n",
       "      <td>86.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>10.8</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>180504501017</td>\n",
       "      <td>女</td>\n",
       "      <td>93.0</td>\n",
       "      <td>4.3</td>\n",
       "      <td>12.9</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>180504501018</td>\n",
       "      <td>男</td>\n",
       "      <td>91.0</td>\n",
       "      <td>4.1</td>\n",
       "      <td>12.3</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>180504501019</td>\n",
       "      <td>女</td>\n",
       "      <td>85.0</td>\n",
       "      <td>3.5</td>\n",
       "      <td>10.5</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>180504501021</td>\n",
       "      <td>男</td>\n",
       "      <td>94.0</td>\n",
       "      <td>4.4</td>\n",
       "      <td>13.2</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>180504501022</td>\n",
       "      <td>女</td>\n",
       "      <td>88.0</td>\n",
       "      <td>3.8</td>\n",
       "      <td>11.4</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>180504501023</td>\n",
       "      <td>男</td>\n",
       "      <td>69.0</td>\n",
       "      <td>1.9</td>\n",
       "      <td>5.7</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>180504501024</td>\n",
       "      <td>男</td>\n",
       "      <td>69.0</td>\n",
       "      <td>1.9</td>\n",
       "      <td>5.7</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>180504501025</td>\n",
       "      <td>女</td>\n",
       "      <td>89.0</td>\n",
       "      <td>3.9</td>\n",
       "      <td>11.7</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>180504501026</td>\n",
       "      <td>男</td>\n",
       "      <td>85.0</td>\n",
       "      <td>3.5</td>\n",
       "      <td>10.5</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>180504501027</td>\n",
       "      <td>女</td>\n",
       "      <td>70.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>180504501028</td>\n",
       "      <td>男</td>\n",
       "      <td>85.0</td>\n",
       "      <td>3.5</td>\n",
       "      <td>10.5</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>180504501029</td>\n",
       "      <td>女</td>\n",
       "      <td>89.0</td>\n",
       "      <td>3.9</td>\n",
       "      <td>11.7</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>180504501030</td>\n",
       "      <td>女</td>\n",
       "      <td>79.0</td>\n",
       "      <td>2.9</td>\n",
       "      <td>8.7</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>180504501031</td>\n",
       "      <td>男</td>\n",
       "      <td>89.0</td>\n",
       "      <td>3.9</td>\n",
       "      <td>11.7</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>180504501032</td>\n",
       "      <td>男</td>\n",
       "      <td>69.0</td>\n",
       "      <td>1.9</td>\n",
       "      <td>5.7</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>180504501033</td>\n",
       "      <td>女</td>\n",
       "      <td>83.0</td>\n",
       "      <td>3.3</td>\n",
       "      <td>9.9</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>180504501034</td>\n",
       "      <td>女</td>\n",
       "      <td>88.0</td>\n",
       "      <td>3.8</td>\n",
       "      <td>11.4</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>180504501035</td>\n",
       "      <td>男</td>\n",
       "      <td>86.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>10.8</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>180504501036</td>\n",
       "      <td>男</td>\n",
       "      <td>80.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>180504501037</td>\n",
       "      <td>男</td>\n",
       "      <td>83.0</td>\n",
       "      <td>3.3</td>\n",
       "      <td>9.9</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>180504501038</td>\n",
       "      <td>男</td>\n",
       "      <td>69.0</td>\n",
       "      <td>1.9</td>\n",
       "      <td>5.7</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>180504501039</td>\n",
       "      <td>男</td>\n",
       "      <td>84.0</td>\n",
       "      <td>3.4</td>\n",
       "      <td>10.2</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>180504501041</td>\n",
       "      <td>男</td>\n",
       "      <td>80.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>180504501042</td>\n",
       "      <td>男</td>\n",
       "      <td>82.0</td>\n",
       "      <td>3.2</td>\n",
       "      <td>9.6</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>180504501043</td>\n",
       "      <td>女</td>\n",
       "      <td>95.0</td>\n",
       "      <td>4.5</td>\n",
       "      <td>13.5</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>180504501044</td>\n",
       "      <td>女</td>\n",
       "      <td>82.0</td>\n",
       "      <td>3.2</td>\n",
       "      <td>9.6</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>180504501045</td>\n",
       "      <td>男</td>\n",
       "      <td>69.0</td>\n",
       "      <td>1.9</td>\n",
       "      <td>5.7</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>180504501046</td>\n",
       "      <td>男</td>\n",
       "      <td>80.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>180504501047</td>\n",
       "      <td>男</td>\n",
       "      <td>84.0</td>\n",
       "      <td>3.4</td>\n",
       "      <td>10.2</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>180504501048</td>\n",
       "      <td>女</td>\n",
       "      <td>82.0</td>\n",
       "      <td>3.2</td>\n",
       "      <td>9.6</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>180504501049</td>\n",
       "      <td>男</td>\n",
       "      <td>89.0</td>\n",
       "      <td>3.9</td>\n",
       "      <td>11.7</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>180504501050</td>\n",
       "      <td>女</td>\n",
       "      <td>87.0</td>\n",
       "      <td>3.7</td>\n",
       "      <td>11.1</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>180504501051</td>\n",
       "      <td>男</td>\n",
       "      <td>67.0</td>\n",
       "      <td>1.7</td>\n",
       "      <td>5.1</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>180504501052</td>\n",
       "      <td>女</td>\n",
       "      <td>90.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>180504501053</td>\n",
       "      <td>男</td>\n",
       "      <td>79.0</td>\n",
       "      <td>2.9</td>\n",
       "      <td>8.7</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50</th>\n",
       "      <td>180504501055</td>\n",
       "      <td>男</td>\n",
       "      <td>86.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>10.8</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>51</th>\n",
       "      <td>180504501056</td>\n",
       "      <td>男</td>\n",
       "      <td>74.0</td>\n",
       "      <td>2.4</td>\n",
       "      <td>7.2</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>52</th>\n",
       "      <td>180504501057</td>\n",
       "      <td>男</td>\n",
       "      <td>82.0</td>\n",
       "      <td>3.2</td>\n",
       "      <td>9.6</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>53</th>\n",
       "      <td>180504501058</td>\n",
       "      <td>男</td>\n",
       "      <td>73.0</td>\n",
       "      <td>2.3</td>\n",
       "      <td>6.9</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>54</th>\n",
       "      <td>180504501059</td>\n",
       "      <td>女</td>\n",
       "      <td>72.0</td>\n",
       "      <td>2.2</td>\n",
       "      <td>6.6</td>\n",
       "      <td>初修</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               学号  性别    成绩   绩点  学分绩点 修读性质 备注\n",
       "0    180504501001   男  69.0  1.9   5.7   初修   \n",
       "1    180504501002   男  84.0  3.4  10.2   初修   \n",
       "2    180504501003   男  82.0  3.2   9.6   初修   \n",
       "3    180504501004   女  86.0  3.6  10.8   初修   \n",
       "4    180504501005   男  77.0  2.7   8.1   初修   \n",
       "5    180504501006   女  69.0  1.9   5.7   初修   \n",
       "6    180504501007   男  84.0  3.4  10.2   初修   \n",
       "7    180504501008   男  84.0  3.4  10.2   初修   \n",
       "8    180504501009   男  75.0  2.5   7.5   初修   \n",
       "9    180504501010   男  83.0  3.3   9.9   初修   \n",
       "10   180504501011   男  81.0  3.1   9.3   初修   \n",
       "11   180504501013   男  90.0  4.0  12.0   初修   \n",
       "12   180504501014   男  87.0  3.7  11.1   初修   \n",
       "13   180504501015   男  83.0  3.3   9.9   初修   \n",
       "14   180504501016   男  86.0  3.6  10.8   初修   \n",
       "15   180504501017   女  93.0  4.3  12.9   初修   \n",
       "16   180504501018   男  91.0  4.1  12.3   初修   \n",
       "17   180504501019   女  85.0  3.5  10.5   初修   \n",
       "18   180504501021   男  94.0  4.4  13.2   初修   \n",
       "19   180504501022   女  88.0  3.8  11.4   初修   \n",
       "20   180504501023   男  69.0  1.9   5.7   初修   \n",
       "21   180504501024   男  69.0  1.9   5.7   初修   \n",
       "22   180504501025   女  89.0  3.9  11.7   初修   \n",
       "23   180504501026   男  85.0  3.5  10.5   初修   \n",
       "24   180504501027   女  70.0  2.0   6.0   初修   \n",
       "25   180504501028   男  85.0  3.5  10.5   初修   \n",
       "26   180504501029   女  89.0  3.9  11.7   初修   \n",
       "27   180504501030   女  79.0  2.9   8.7   初修   \n",
       "28   180504501031   男  89.0  3.9  11.7   初修   \n",
       "29   180504501032   男  69.0  1.9   5.7   初修   \n",
       "30   180504501033   女  83.0  3.3   9.9   初修   \n",
       "31   180504501034   女  88.0  3.8  11.4   初修   \n",
       "32   180504501035   男  86.0  3.6  10.8   初修   \n",
       "33   180504501036   男  80.0  3.0   9.0   初修   \n",
       "34   180504501037   男  83.0  3.3   9.9   初修   \n",
       "35   180504501038   男  69.0  1.9   5.7   初修   \n",
       "36   180504501039   男  84.0  3.4  10.2   初修   \n",
       "37   180504501041   男  80.0  3.0   9.0   初修   \n",
       "38   180504501042   男  82.0  3.2   9.6   初修   \n",
       "39   180504501043   女  95.0  4.5  13.5   初修   \n",
       "40   180504501044   女  82.0  3.2   9.6   初修   \n",
       "41   180504501045   男  69.0  1.9   5.7   初修   \n",
       "42   180504501046   男  80.0  3.0   9.0   初修   \n",
       "43   180504501047   男  84.0  3.4  10.2   初修   \n",
       "44   180504501048   女  82.0  3.2   9.6   初修   \n",
       "45   180504501049   男  89.0  3.9  11.7   初修   \n",
       "46   180504501050   女  87.0  3.7  11.1   初修   \n",
       "47   180504501051   男  67.0  1.7   5.1   初修   \n",
       "48   180504501052   女  90.0  4.0  12.0   初修   \n",
       "49   180504501053   男  79.0  2.9   8.7   初修   \n",
       "50   180504501055   男  86.0  3.6  10.8   初修   \n",
       "51   180504501056   男  74.0  2.4   7.2   初修   \n",
       "52   180504501057   男  82.0  3.2   9.6   初修   \n",
       "53   180504501058   男  73.0  2.3   6.9   初修   \n",
       "54   180504501059   女  72.0  2.2   6.6   初修   "
      ]
     },
     "execution_count": 114,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 读取55学生成绩相关数据（数据挖掘成绩.xlsx）\n",
    "df_1 = pd.read_excel(r'数据挖掘成绩.xlsx',\n",
    "                   usecols=[i for i in range(0,7)],         # 读取0-6列\n",
    "                   skiprows=range(0,4),                     # 不读取0-3行\n",
    "                   nrows=41)                                # 读取前41列\n",
    "\n",
    "df_2 = pd.read_excel(r'数据挖掘成绩.xlsx',\n",
    "                   usecols=[i for i in range(0,7)],         # 读取0-6列\n",
    "                   skiprows=range(0,52),                    # 不读取0-52行\n",
    "                   nrows=14)                                # 读取前14列\n",
    "\n",
    "data = pd.concat([df_1, df_2], axis=0)\n",
    "data.index = range(len(data))\n",
    "data[[\"成绩\",\"绩点\",\"学分绩点\"]] = data[[\"成绩\",\"绩点\",\"学分绩点\"]].astype(float)\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "id": "840e3ce0",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp/ipykernel_11780/1574350372.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  data[\"备注\"][i] = \"D\"\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp/ipykernel_11780/1574350372.py:5: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  data[\"备注\"][i] = \"B\"\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp/ipykernel_11780/1574350372.py:7: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  data[\"备注\"][i] = \"C\"\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp/ipykernel_11780/1574350372.py:3: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  data[\"备注\"][i] = \"A\"\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>学号</th>\n",
       "      <th>性别</th>\n",
       "      <th>成绩</th>\n",
       "      <th>绩点</th>\n",
       "      <th>学分绩点</th>\n",
       "      <th>修读性质</th>\n",
       "      <th>备注</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>180504501001</td>\n",
       "      <td>男</td>\n",
       "      <td>69.0</td>\n",
       "      <td>1.9</td>\n",
       "      <td>5.7</td>\n",
       "      <td>初修</td>\n",
       "      <td>D</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>180504501002</td>\n",
       "      <td>男</td>\n",
       "      <td>84.0</td>\n",
       "      <td>3.4</td>\n",
       "      <td>10.2</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>180504501003</td>\n",
       "      <td>男</td>\n",
       "      <td>82.0</td>\n",
       "      <td>3.2</td>\n",
       "      <td>9.6</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>180504501004</td>\n",
       "      <td>女</td>\n",
       "      <td>86.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>10.8</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>180504501005</td>\n",
       "      <td>男</td>\n",
       "      <td>77.0</td>\n",
       "      <td>2.7</td>\n",
       "      <td>8.1</td>\n",
       "      <td>初修</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>180504501006</td>\n",
       "      <td>女</td>\n",
       "      <td>69.0</td>\n",
       "      <td>1.9</td>\n",
       "      <td>5.7</td>\n",
       "      <td>初修</td>\n",
       "      <td>D</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>180504501007</td>\n",
       "      <td>男</td>\n",
       "      <td>84.0</td>\n",
       "      <td>3.4</td>\n",
       "      <td>10.2</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>180504501008</td>\n",
       "      <td>男</td>\n",
       "      <td>84.0</td>\n",
       "      <td>3.4</td>\n",
       "      <td>10.2</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>180504501009</td>\n",
       "      <td>男</td>\n",
       "      <td>75.0</td>\n",
       "      <td>2.5</td>\n",
       "      <td>7.5</td>\n",
       "      <td>初修</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>180504501010</td>\n",
       "      <td>男</td>\n",
       "      <td>83.0</td>\n",
       "      <td>3.3</td>\n",
       "      <td>9.9</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>180504501011</td>\n",
       "      <td>男</td>\n",
       "      <td>81.0</td>\n",
       "      <td>3.1</td>\n",
       "      <td>9.3</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>180504501013</td>\n",
       "      <td>男</td>\n",
       "      <td>90.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>初修</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>180504501014</td>\n",
       "      <td>男</td>\n",
       "      <td>87.0</td>\n",
       "      <td>3.7</td>\n",
       "      <td>11.1</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>180504501015</td>\n",
       "      <td>男</td>\n",
       "      <td>83.0</td>\n",
       "      <td>3.3</td>\n",
       "      <td>9.9</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>180504501016</td>\n",
       "      <td>男</td>\n",
       "      <td>86.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>10.8</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>180504501017</td>\n",
       "      <td>女</td>\n",
       "      <td>93.0</td>\n",
       "      <td>4.3</td>\n",
       "      <td>12.9</td>\n",
       "      <td>初修</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>180504501018</td>\n",
       "      <td>男</td>\n",
       "      <td>91.0</td>\n",
       "      <td>4.1</td>\n",
       "      <td>12.3</td>\n",
       "      <td>初修</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>180504501019</td>\n",
       "      <td>女</td>\n",
       "      <td>85.0</td>\n",
       "      <td>3.5</td>\n",
       "      <td>10.5</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>180504501021</td>\n",
       "      <td>男</td>\n",
       "      <td>94.0</td>\n",
       "      <td>4.4</td>\n",
       "      <td>13.2</td>\n",
       "      <td>初修</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>180504501022</td>\n",
       "      <td>女</td>\n",
       "      <td>88.0</td>\n",
       "      <td>3.8</td>\n",
       "      <td>11.4</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>180504501023</td>\n",
       "      <td>男</td>\n",
       "      <td>69.0</td>\n",
       "      <td>1.9</td>\n",
       "      <td>5.7</td>\n",
       "      <td>初修</td>\n",
       "      <td>D</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>180504501024</td>\n",
       "      <td>男</td>\n",
       "      <td>69.0</td>\n",
       "      <td>1.9</td>\n",
       "      <td>5.7</td>\n",
       "      <td>初修</td>\n",
       "      <td>D</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>180504501025</td>\n",
       "      <td>女</td>\n",
       "      <td>89.0</td>\n",
       "      <td>3.9</td>\n",
       "      <td>11.7</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>180504501026</td>\n",
       "      <td>男</td>\n",
       "      <td>85.0</td>\n",
       "      <td>3.5</td>\n",
       "      <td>10.5</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>180504501027</td>\n",
       "      <td>女</td>\n",
       "      <td>70.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>初修</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>180504501028</td>\n",
       "      <td>男</td>\n",
       "      <td>85.0</td>\n",
       "      <td>3.5</td>\n",
       "      <td>10.5</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>180504501029</td>\n",
       "      <td>女</td>\n",
       "      <td>89.0</td>\n",
       "      <td>3.9</td>\n",
       "      <td>11.7</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>180504501030</td>\n",
       "      <td>女</td>\n",
       "      <td>79.0</td>\n",
       "      <td>2.9</td>\n",
       "      <td>8.7</td>\n",
       "      <td>初修</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>180504501031</td>\n",
       "      <td>男</td>\n",
       "      <td>89.0</td>\n",
       "      <td>3.9</td>\n",
       "      <td>11.7</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>180504501032</td>\n",
       "      <td>男</td>\n",
       "      <td>69.0</td>\n",
       "      <td>1.9</td>\n",
       "      <td>5.7</td>\n",
       "      <td>初修</td>\n",
       "      <td>D</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>180504501033</td>\n",
       "      <td>女</td>\n",
       "      <td>83.0</td>\n",
       "      <td>3.3</td>\n",
       "      <td>9.9</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>180504501034</td>\n",
       "      <td>女</td>\n",
       "      <td>88.0</td>\n",
       "      <td>3.8</td>\n",
       "      <td>11.4</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>180504501035</td>\n",
       "      <td>男</td>\n",
       "      <td>86.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>10.8</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>180504501036</td>\n",
       "      <td>男</td>\n",
       "      <td>80.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>180504501037</td>\n",
       "      <td>男</td>\n",
       "      <td>83.0</td>\n",
       "      <td>3.3</td>\n",
       "      <td>9.9</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>180504501038</td>\n",
       "      <td>男</td>\n",
       "      <td>69.0</td>\n",
       "      <td>1.9</td>\n",
       "      <td>5.7</td>\n",
       "      <td>初修</td>\n",
       "      <td>D</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>180504501039</td>\n",
       "      <td>男</td>\n",
       "      <td>84.0</td>\n",
       "      <td>3.4</td>\n",
       "      <td>10.2</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>180504501041</td>\n",
       "      <td>男</td>\n",
       "      <td>80.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>180504501042</td>\n",
       "      <td>男</td>\n",
       "      <td>82.0</td>\n",
       "      <td>3.2</td>\n",
       "      <td>9.6</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>180504501043</td>\n",
       "      <td>女</td>\n",
       "      <td>95.0</td>\n",
       "      <td>4.5</td>\n",
       "      <td>13.5</td>\n",
       "      <td>初修</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>180504501044</td>\n",
       "      <td>女</td>\n",
       "      <td>82.0</td>\n",
       "      <td>3.2</td>\n",
       "      <td>9.6</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>180504501045</td>\n",
       "      <td>男</td>\n",
       "      <td>69.0</td>\n",
       "      <td>1.9</td>\n",
       "      <td>5.7</td>\n",
       "      <td>初修</td>\n",
       "      <td>D</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>180504501046</td>\n",
       "      <td>男</td>\n",
       "      <td>80.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>180504501047</td>\n",
       "      <td>男</td>\n",
       "      <td>84.0</td>\n",
       "      <td>3.4</td>\n",
       "      <td>10.2</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>180504501048</td>\n",
       "      <td>女</td>\n",
       "      <td>82.0</td>\n",
       "      <td>3.2</td>\n",
       "      <td>9.6</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>180504501049</td>\n",
       "      <td>男</td>\n",
       "      <td>89.0</td>\n",
       "      <td>3.9</td>\n",
       "      <td>11.7</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>180504501050</td>\n",
       "      <td>女</td>\n",
       "      <td>87.0</td>\n",
       "      <td>3.7</td>\n",
       "      <td>11.1</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>180504501051</td>\n",
       "      <td>男</td>\n",
       "      <td>67.0</td>\n",
       "      <td>1.7</td>\n",
       "      <td>5.1</td>\n",
       "      <td>初修</td>\n",
       "      <td>D</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>180504501052</td>\n",
       "      <td>女</td>\n",
       "      <td>90.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>初修</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>180504501053</td>\n",
       "      <td>男</td>\n",
       "      <td>79.0</td>\n",
       "      <td>2.9</td>\n",
       "      <td>8.7</td>\n",
       "      <td>初修</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50</th>\n",
       "      <td>180504501055</td>\n",
       "      <td>男</td>\n",
       "      <td>86.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>10.8</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>51</th>\n",
       "      <td>180504501056</td>\n",
       "      <td>男</td>\n",
       "      <td>74.0</td>\n",
       "      <td>2.4</td>\n",
       "      <td>7.2</td>\n",
       "      <td>初修</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>52</th>\n",
       "      <td>180504501057</td>\n",
       "      <td>男</td>\n",
       "      <td>82.0</td>\n",
       "      <td>3.2</td>\n",
       "      <td>9.6</td>\n",
       "      <td>初修</td>\n",
       "      <td>B</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>53</th>\n",
       "      <td>180504501058</td>\n",
       "      <td>男</td>\n",
       "      <td>73.0</td>\n",
       "      <td>2.3</td>\n",
       "      <td>6.9</td>\n",
       "      <td>初修</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>54</th>\n",
       "      <td>180504501059</td>\n",
       "      <td>女</td>\n",
       "      <td>72.0</td>\n",
       "      <td>2.2</td>\n",
       "      <td>6.6</td>\n",
       "      <td>初修</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               学号  性别    成绩   绩点  学分绩点 修读性质 备注\n",
       "0    180504501001   男  69.0  1.9   5.7   初修  D\n",
       "1    180504501002   男  84.0  3.4  10.2   初修  B\n",
       "2    180504501003   男  82.0  3.2   9.6   初修  B\n",
       "3    180504501004   女  86.0  3.6  10.8   初修  B\n",
       "4    180504501005   男  77.0  2.7   8.1   初修  C\n",
       "5    180504501006   女  69.0  1.9   5.7   初修  D\n",
       "6    180504501007   男  84.0  3.4  10.2   初修  B\n",
       "7    180504501008   男  84.0  3.4  10.2   初修  B\n",
       "8    180504501009   男  75.0  2.5   7.5   初修  C\n",
       "9    180504501010   男  83.0  3.3   9.9   初修  B\n",
       "10   180504501011   男  81.0  3.1   9.3   初修  B\n",
       "11   180504501013   男  90.0  4.0  12.0   初修  A\n",
       "12   180504501014   男  87.0  3.7  11.1   初修  B\n",
       "13   180504501015   男  83.0  3.3   9.9   初修  B\n",
       "14   180504501016   男  86.0  3.6  10.8   初修  B\n",
       "15   180504501017   女  93.0  4.3  12.9   初修  A\n",
       "16   180504501018   男  91.0  4.1  12.3   初修  A\n",
       "17   180504501019   女  85.0  3.5  10.5   初修  B\n",
       "18   180504501021   男  94.0  4.4  13.2   初修  A\n",
       "19   180504501022   女  88.0  3.8  11.4   初修  B\n",
       "20   180504501023   男  69.0  1.9   5.7   初修  D\n",
       "21   180504501024   男  69.0  1.9   5.7   初修  D\n",
       "22   180504501025   女  89.0  3.9  11.7   初修  B\n",
       "23   180504501026   男  85.0  3.5  10.5   初修  B\n",
       "24   180504501027   女  70.0  2.0   6.0   初修  C\n",
       "25   180504501028   男  85.0  3.5  10.5   初修  B\n",
       "26   180504501029   女  89.0  3.9  11.7   初修  B\n",
       "27   180504501030   女  79.0  2.9   8.7   初修  C\n",
       "28   180504501031   男  89.0  3.9  11.7   初修  B\n",
       "29   180504501032   男  69.0  1.9   5.7   初修  D\n",
       "30   180504501033   女  83.0  3.3   9.9   初修  B\n",
       "31   180504501034   女  88.0  3.8  11.4   初修  B\n",
       "32   180504501035   男  86.0  3.6  10.8   初修  B\n",
       "33   180504501036   男  80.0  3.0   9.0   初修  B\n",
       "34   180504501037   男  83.0  3.3   9.9   初修  B\n",
       "35   180504501038   男  69.0  1.9   5.7   初修  D\n",
       "36   180504501039   男  84.0  3.4  10.2   初修  B\n",
       "37   180504501041   男  80.0  3.0   9.0   初修  B\n",
       "38   180504501042   男  82.0  3.2   9.6   初修  B\n",
       "39   180504501043   女  95.0  4.5  13.5   初修  A\n",
       "40   180504501044   女  82.0  3.2   9.6   初修  B\n",
       "41   180504501045   男  69.0  1.9   5.7   初修  D\n",
       "42   180504501046   男  80.0  3.0   9.0   初修  B\n",
       "43   180504501047   男  84.0  3.4  10.2   初修  B\n",
       "44   180504501048   女  82.0  3.2   9.6   初修  B\n",
       "45   180504501049   男  89.0  3.9  11.7   初修  B\n",
       "46   180504501050   女  87.0  3.7  11.1   初修  B\n",
       "47   180504501051   男  67.0  1.7   5.1   初修  D\n",
       "48   180504501052   女  90.0  4.0  12.0   初修  A\n",
       "49   180504501053   男  79.0  2.9   8.7   初修  C\n",
       "50   180504501055   男  86.0  3.6  10.8   初修  B\n",
       "51   180504501056   男  74.0  2.4   7.2   初修  C\n",
       "52   180504501057   男  82.0  3.2   9.6   初修  B\n",
       "53   180504501058   男  73.0  2.3   6.9   初修  C\n",
       "54   180504501059   女  72.0  2.2   6.6   初修  C"
      ]
     },
     "execution_count": 115,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "for i in data.index:\n",
    "    if data[\"成绩\"][i] >= 90:\n",
    "        data[\"备注\"][i] = \"A\"\n",
    "    elif data[\"成绩\"][i] >= 80:\n",
    "        data[\"备注\"][i] = \"B\"\n",
    "    elif data[\"成绩\"][i] >= 70:\n",
    "        data[\"备注\"][i] = \"C\"\n",
    "    else:\n",
    "        data[\"备注\"][i] = \"D\"\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "id": "b0425d86",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['D', 'B', 'B', 'B', 'C', 'D', 'B', 'B', 'C', 'B', 'B', 'A', 'B',\n",
       "       'B', 'B', 'A', 'A', 'B', 'A', 'B', 'D', 'D', 'B', 'B', 'C', 'B',\n",
       "       'B', 'C', 'B', 'D', 'B', 'B', 'B', 'B', 'B', 'D', 'B', 'B', 'B',\n",
       "       'A', 'B', 'D', 'B', 'B', 'B', 'B', 'B', 'D', 'A', 'C', 'B', 'C',\n",
       "       'B', 'C', 'C'], dtype=object)"
      ]
     },
     "execution_count": 116,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred= data[\"备注\"].values\n",
    "y_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "id": "6da53ef0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KNeighborsClassifier(n_neighbors=15, weights='distance')"
      ]
     },
     "execution_count": 117,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 指定近邻个数\n",
    "n_neighbors = 15\n",
    "weights = 'distance'\n",
    "knn_clf = neighbors.KNeighborsClassifier(n_neighbors, weights=weights)\n",
    "knn_clf.fit(x, y_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "id": "ebd13f41",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['D', 'B', 'B', 'B', 'C', 'D', 'B', 'B', 'C', 'B', 'B', 'A', 'B',\n",
       "       'B', 'B', 'A', 'A', 'B', 'A', 'B', 'D', 'D', 'B', 'B', 'C', 'B',\n",
       "       'B', 'C', 'B', 'D', 'B', 'B', 'B', 'B', 'B', 'D', 'B', 'B', 'B',\n",
       "       'A', 'B', 'D', 'B', 'B', 'B', 'B', 'B', 'D', 'A', 'C', 'B', 'C',\n",
       "       'B', 'C', 'C'], dtype=object)"
      ]
     },
     "execution_count": 118,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "knn_pre_y = knn_clf.predict(x)\n",
    "knn_pre_y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "id": "3e1db2f3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 准确率：\n",
    "sum=0\n",
    "for i in range(len(y_pred)):\n",
    "    if knn_pre_y[i] == y_pred[i]:\n",
    "        sum+=1\n",
    "sum/len(y_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d55b3002",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "956beecf",
   "metadata": {},
   "outputs": [],
   "source": [
    "#聚类\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.cluster import DBSCAN\n",
    "from sklearn import metrics\n",
    "from sklearn.datasets import make_blobs\n",
    "# from sklearn.datasets.samples_generator import make_blobs\n",
    "\n",
    "from sklearn.preprocessing import StandardScaler"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "daa05873",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[69. ,  1.9,  5.7],\n",
       "       [84. ,  3.4, 10.2],\n",
       "       [82. ,  3.2,  9.6],\n",
       "       [86. ,  3.6, 10.8],\n",
       "       [77. ,  2.7,  8.1],\n",
       "       [69. ,  1.9,  5.7],\n",
       "       [84. ,  3.4, 10.2],\n",
       "       [84. ,  3.4, 10.2],\n",
       "       [75. ,  2.5,  7.5],\n",
       "       [83. ,  3.3,  9.9],\n",
       "       [81. ,  3.1,  9.3],\n",
       "       [90. ,  4. , 12. ],\n",
       "       [87. ,  3.7, 11.1],\n",
       "       [83. ,  3.3,  9.9],\n",
       "       [86. ,  3.6, 10.8],\n",
       "       [93. ,  4.3, 12.9],\n",
       "       [91. ,  4.1, 12.3],\n",
       "       [85. ,  3.5, 10.5],\n",
       "       [94. ,  4.4, 13.2],\n",
       "       [88. ,  3.8, 11.4],\n",
       "       [69. ,  1.9,  5.7],\n",
       "       [69. ,  1.9,  5.7],\n",
       "       [89. ,  3.9, 11.7],\n",
       "       [85. ,  3.5, 10.5],\n",
       "       [70. ,  2. ,  6. ],\n",
       "       [85. ,  3.5, 10.5],\n",
       "       [89. ,  3.9, 11.7],\n",
       "       [79. ,  2.9,  8.7],\n",
       "       [89. ,  3.9, 11.7],\n",
       "       [69. ,  1.9,  5.7],\n",
       "       [83. ,  3.3,  9.9],\n",
       "       [88. ,  3.8, 11.4],\n",
       "       [86. ,  3.6, 10.8],\n",
       "       [80. ,  3. ,  9. ],\n",
       "       [83. ,  3.3,  9.9],\n",
       "       [69. ,  1.9,  5.7],\n",
       "       [84. ,  3.4, 10.2],\n",
       "       [80. ,  3. ,  9. ],\n",
       "       [82. ,  3.2,  9.6],\n",
       "       [95. ,  4.5, 13.5],\n",
       "       [82. ,  3.2,  9.6],\n",
       "       [69. ,  1.9,  5.7],\n",
       "       [80. ,  3. ,  9. ],\n",
       "       [84. ,  3.4, 10.2],\n",
       "       [82. ,  3.2,  9.6],\n",
       "       [89. ,  3.9, 11.7],\n",
       "       [87. ,  3.7, 11.1],\n",
       "       [67. ,  1.7,  5.1],\n",
       "       [90. ,  4. , 12. ],\n",
       "       [79. ,  2.9,  8.7],\n",
       "       [86. ,  3.6, 10.8],\n",
       "       [74. ,  2.4,  7.2],\n",
       "       [82. ,  3.2,  9.6],\n",
       "       [73. ,  2.3,  6.9],\n",
       "       [72. ,  2.2,  6.6]])"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 读取55学生成绩相关数据（数据挖掘成绩.xlsx）\n",
    "df_1 = pd.read_excel(r'数据挖掘成绩.xlsx',\n",
    "                   usecols=[i for i in range(0,7)],         # 读取0-6列\n",
    "                   skiprows=range(0,4),                     # 不读取0-3行\n",
    "                   nrows=41)                                # 读取前41列\n",
    "\n",
    "df_2 = pd.read_excel(r'数据挖掘成绩.xlsx',\n",
    "                   usecols=[i for i in range(0,7)],         # 读取0-6列\n",
    "                   skiprows=range(0,52),                    # 不读取0-52行\n",
    "                   nrows=14)                                # 读取前14列\n",
    "data = pd.concat([df_1, df_2], axis=0)\n",
    "data.index = range(len(data))\n",
    "data[[\"成绩\",\"绩点\",\"学分绩点\"]] = data[[\"成绩\",\"绩点\",\"学分绩点\"]].astype(float)\n",
    "data = data[[\"成绩\",\"绩点\",\"学分绩点\"]].values\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "4ec0b928",
   "metadata": {},
   "outputs": [],
   "source": [
    "X ,labels_trun = make_blobs(n_samples=750, centers=data, cluster_std=0.4)\n",
    "X = StandardScaler().fit_transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "984d8786",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 计算DBSCAN模型\n",
    "db = DBSCAN(eps=0.2, min_samples=10).fit(X)\n",
    "core_samples_mask = np.zeros_like(db.labels_, dtype=bool)\n",
    "core_samples_mask[db.core_sample_indices_] = True\n",
    "labels = db.labels_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "a8ebd7c8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "估计聚类个数： 3\n"
     ]
    }
   ],
   "source": [
    "# 统计基本结果\n",
    "n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)\n",
    "print(\"估计聚类个数：\",n_clusters_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "9ca20965",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Develop\\anaconda\\lib\\site-packages\\matplotlib\\backends\\backend_agg.py:240: RuntimeWarning: Glyph 8722 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "D:\\Develop\\anaconda\\lib\\site-packages\\matplotlib\\backends\\backend_agg.py:203: RuntimeWarning: Glyph 8722 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘图展示效果\n",
    "plt.rcParams['font.sans-serif'] = ['Simhei'] # 黑体\n",
    "unique_labels = set(labels)\n",
    "colors = [plt.cm.Spectral(each)\n",
    "         for each in np.linspace(0, 1, len(unique_labels))]\n",
    "for k, col in zip(unique_labels, colors):\n",
    "    if k == -1:\n",
    "        col = [0, 0, 0, 1]\n",
    "    class_member_mask = (labels == k)\n",
    "    xy = X[class_member_mask & core_samples_mask]\n",
    "    plt.plot(xy[:, 0], xy[:, 1],\n",
    "             \"o\",\n",
    "             markerfacecolor=tuple(col),\n",
    "             markeredgecolor=\"k\",\n",
    "             markersize=14)\n",
    "    xy = X[class_member_mask & ~core_samples_mask]\n",
    "    plt.plot(xy[:, 0], xy[:, 1],\n",
    "             \"o\",\n",
    "             markerfacecolor=tuple(col),\n",
    "             markeredgecolor=\"k\",\n",
    "\n",
    "             markersize=6)\n",
    "plt.title(\"估计集群数:{}\".format(n_clusters_))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ab4a142f",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "77729fbd",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "edc80bd2",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d63be5cd",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
